package conf

import (
	"fmt"
	"github.com/spf13/viper"
)

//viper 配置文件
// 文档：https://www.liwenzhou.com/posts/Go/viper_tutorial/
//  官方： https://github.com/spf13/viper
//获取  go get github.com/spf13/viper

//type Config struct {
//	Port    int    `mapstructure:"port"`
//	Version string `mapstructure:"version"`
//}
//
//var Conf = new(Config)

func InitViper() {
	//var err error
	//mysqlConf := viper.New()
	//mysqlConf.SetConfigFile("./conf/mysql.ini")
	//if err != nil { // 读取配置信息失败
	//	panic(fmt.Errorf("Fatal error read mysql config file: %s \n", err))
	//}
	//
	//redisConf := viper.New()
	//redisConf.SetConfigFile("./conf/redis.ini")
	//if err != nil { // 读取配置信息失败
	//	panic(fmt.Errorf("Fatal error read redis config file: %s \n", err))
	//}
	//
	//// 监控配置文件变化
	//mysqlConf.WatchConfig()
	//redisConf.WatchConfig()

	viper.SetConfigFile("./conf/conf.ini") // 指定配置文件路径
	// 读取配置信息
	if err := viper.ReadInConfig(); err != nil {
		// 读取配置信息失败
		panic(fmt.Errorf("Fatal error config file: %s \n", err))
	}

	//// 将读取的配置信息保存至全局变量Conf
	//if err := viper.Unmarshal(Conf); err != nil {
	//	panic(fmt.Errorf("unmarshal conf failed, err:%s \n", err))
	//}

	// 监控配置文件变化
	viper.WatchConfig()

	//// 注意！！！配置文件发生变化后要同步到全局变量Conf
	//viper.OnConfigChange(func(e fsnotify.Event) {
	// 配置文件发生变更之后会调用的回调函数
	//  fmt.Println("Config file changed:", e.Name)
	//	fmt.Println("夭寿啦~配置文件被人修改啦...")
	//	if err := viper.Unmarshal(Conf); err != nil {
	//		panic(fmt.Errorf("unmarshal conf failed, err:%s \n", err))
	//	}
	//})

}
